# Завантаження покетів та набору даних
library(tidyverse)
TMDB <- read_csv("U:/Master's_work_Boiko/Data_Analysis_movie/tmdb_movies.csv")
TMDB
# Кількість зміних і спостережень
dim(TMDB)
## [1] 10866 21
# Імена зміних
names(TMDB)
## [1] "id" "imdb_id" "popularity"
## [4] "budget" "revenue" "original_title"
## [7] "cast" "homepage" "director"
## [10] "tagline" "keywords" "overview"
## [13] "runtime" "genres" "production_companies"
## [16] "release_date" "vote_count" "vote_average"
## [19] "release_year" "budget_adj" "revenue_adj"
# Видалення нерелевантних даних
TMDB_cleaned <- TMDB %>% select(-c(imdb_id, budget, revenue, homepage, tagline, keywords, overview, production_companies, release_date))
TMDB_cleaned
# Перевірка кількість NA значень у кожній змінній
na_count <- sapply(TMDB_cleaned, function(y) sum(length(which(is.na(y)))))
print(na_count)
## id popularity original_title cast director
## 0 0 0 76 44
## runtime genres vote_count vote_average release_year
## 0 23 0 0 0
## budget_adj revenue_adj
## 0 0
# Видалення рядків, які містять NA значення
TMDB_cleaned <- na.omit(TMDB_cleaned)
print(sum(is.na(TMDB_cleaned)))
## [1] 0
# Перевірка кількість NA значень у кожній змінній
na_count <- sapply(TMDB_cleaned, function(y) sum(length(which(is.na(y)))))
# Перевірка результату
print(na_count)
## id popularity original_title cast director
## 0 0 0 0 0
## runtime genres vote_count vote_average release_year
## 0 0 0 0 0
## budget_adj revenue_adj
## 0 0
# Кількість зміних і спостережень
dim(TMDB_cleaned)
## [1] 10732 12
# Перевірка на кількість 0 значень у кожній змінній
zero_count <- sapply(TMDB_cleaned, function(y) sum(y == 0, na.rm = TRUE))
print(zero_count)
## id popularity original_title cast director
## 0 0 0 0 0
## runtime genres vote_count vote_average release_year
## 28 0 0 0 0
## budget_adj revenue_adj
## 5578 5888
# Видалення рядків, де budget, revenue та runtime дорівнює 0
TMDB_cleaned <- TMDB_cleaned %>%
filter(budget_adj > 0 & revenue_adj > 0 & runtime > 0)
# Перевірка результату
summary(TMDB_cleaned$budget_adj)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1 13172182 30045239 44289889 60728666 425000000
summary(TMDB_cleaned$revenue_adj)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.000e+00 1.841e+07 6.179e+07 1.372e+08 1.634e+08 2.827e+09
summary(TMDB_cleaned$runtime)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 15.0 95.0 106.0 109.2 119.0 338.0
# Кількість зміних і спостережень
dim(TMDB_cleaned)
## [1] 3850 12
# Перевірка на наявність дублікатів
original_nrow <- nrow(TMDB_cleaned)
duplicated_rows <- TMDB_cleaned[duplicated(TMDB_cleaned),]
# Якщо є дублікати, вивести їх кількість
if(nrow(duplicated_rows) > 0) {
print(paste("Number of duplicated rows: ", nrow(duplicated_rows)))
}
## [1] "Number of duplicated rows: 1"
# Видалення дублікатів
TMDB_cleaned <- distinct(TMDB_cleaned)
# Перевірка результату
new_nrow <- nrow(TMDB_cleaned)
print(paste("Кількість рядків до видалення дублікатів: ", original_nrow))
## [1] "Кількість рядків до видалення дублікатів: 3850"
print(paste("Кількість рядків після видалення дублікатів: ", new_nrow))
## [1] "Кількість рядків після видалення дублікатів: 3849"
# Виведення структури DataFrame, що включає імена та типи змінних, а також перші кілька значень кожної змінної
str(TMDB_cleaned)
## tibble [3,849 × 12] (S3: tbl_df/tbl/data.frame)
## $ id : num [1:3849] 135397 76341 262500 140607 168259 ...
## $ popularity : num [1:3849] 32.99 28.42 13.11 11.17 9.34 ...
## $ original_title: chr [1:3849] "Jurassic World" "Mad Max: Fury Road" "Insurgent" "Star Wars: The Force Awakens" ...
## $ cast : chr [1:3849] "Chris Pratt|Bryce Dallas Howard|Irrfan Khan|Vincent D'Onofrio|Nick Robinson" "Tom Hardy|Charlize Theron|Hugh Keays-Byrne|Nicholas Hoult|Josh Helman" "Shailene Woodley|Theo James|Kate Winslet|Ansel Elgort|Miles Teller" "Harrison Ford|Mark Hamill|Carrie Fisher|Adam Driver|Daisy Ridley" ...
## $ director : chr [1:3849] "Colin Trevorrow" "George Miller" "Robert Schwentke" "J.J. Abrams" ...
## $ runtime : num [1:3849] 124 120 119 136 137 156 125 141 91 94 ...
## $ genres : chr [1:3849] "Action|Adventure|Science Fiction|Thriller" "Action|Adventure|Science Fiction|Thriller" "Adventure|Science Fiction|Thriller" "Action|Adventure|Science Fiction|Fantasy" ...
## $ vote_count : num [1:3849] 5562 6185 2480 5292 2947 ...
## $ vote_average : num [1:3849] 6.5 7.1 6.3 7.5 7.3 7.2 5.8 7.6 6.5 8 ...
## $ release_year : num [1:3849] 2015 2015 2015 2015 2015 ...
## $ budget_adj : num [1:3849] 1.38e+08 1.38e+08 1.01e+08 1.84e+08 1.75e+08 ...
## $ revenue_adj : num [1:3849] 1.39e+09 3.48e+08 2.72e+08 1.90e+09 1.39e+09 ...
## - attr(*, "na.action")= 'omit' Named int [1:134] 372 425 442 466 533 537 539 549 557 588 ...
## ..- attr(*, "names")= chr [1:134] "372" "425" "442" "466" ...
# Перевірка розміру DataFrame
print(paste("Кількість рядків: ", nrow(TMDB_cleaned)))
## [1] "Кількість рядків: 3849"
print(paste("Кількість стовбців: ", ncol(TMDB_cleaned)))
## [1] "Кількість стовбців: 12"
# Перевірка загальних статистичних характеристик змінних
summary(TMDB_cleaned)
## id popularity original_title cast
## Min. : 5 Min. : 0.00112 Length:3849 Length:3849
## 1st Qu.: 6072 1st Qu.: 0.46334 Class :character Class :character
## Median : 11313 Median : 0.79858 Mode :character Mode :character
## Mean : 39885 Mean : 1.19293
## 3rd Qu.: 38575 3rd Qu.: 1.37430
## Max. :417859 Max. :32.98576
## director runtime genres vote_count
## Length:3849 Min. : 15.0 Length:3849 Min. : 10.0
## Class :character 1st Qu.: 95.0 Class :character 1st Qu.: 71.0
## Mode :character Median :106.0 Mode :character Median : 205.0
## Mean :109.2 Mean : 528.4
## 3rd Qu.:119.0 3rd Qu.: 581.0
## Max. :338.0 Max. :9767.0
## vote_average release_year budget_adj revenue_adj
## Min. :2.200 Min. :1960 Min. : 1 Min. :2.000e+00
## 1st Qu.:5.700 1st Qu.:1995 1st Qu.: 13166226 1st Qu.:1.843e+07
## Median :6.200 Median :2004 Median : 30050304 Median :6.181e+07
## Mean :6.169 Mean :2001 Mean : 44293602 Mean :1.372e+08
## 3rd Qu.:6.700 3rd Qu.:2010 3rd Qu.: 60767198 3rd Qu.:1.634e+08
## Max. :8.400 Max. :2015 Max. :425000000 Max. :2.827e+09
# Перевірка перших та останніх рядків DataFrame
head(TMDB_cleaned)
tail(TMDB_cleaned)